Если файл был открыт, он должен быть закрыт. Открывается он функций 3dh и его дескриптор вернется в регистре AX. Для закрытия нам нужно будет это дескриптор сохранить.
AH 3eH BX дескриптор файла Возврат AX код ошибки если CF установлен к CY
Итак, будет пробовать, изменим "Шаг 40 - Функция 3dh - открытие файла" добавив функцию закрытия.
; сегмент смещение строки
; mov dx,offset str2
; str2 DB 'Step 16 $'
WriteStr PROC
mov ah,09h
int 21h
ret
WriteStr ENDP
; сегмент смещение строки
; mov dx, OFFSET FileName
; FileName DB '43.asm',0h
OpenFileRead PROC
mov ah,3dh
mov al,0
int 21h
ret
OpenFileRead ENDP
; в BX дескриптор файла
CloseFile PROC
mov ah,3eh
int 21h
ret
CloseFile ENDP
И теперь сама программа
MODEL SMALL
STACK 256
DATASEG
FileName DB '43.asm',0h
OkStr DB 'OK','$'
ErrorStr DB 'Error','$'
CODESEG
Start:
mov ax,@data ; установка в ds адpеса
mov ds,ax ; сегмента данных
mov dx, OFFSET FileName ; имя файла
CALL OpenFileRead
jc Error ; проверить флаг
mov bx,ax
Call CloseFile
mov dx,OFFSET OkStr
jmp Write
Error:
mov dx,OFFSET ErrorStr
Write:
Call WriteStr
Exit:
mov ah,04Ch ; функция DOS выхода из пpогpаммы
mov al,0h ; код возвpата
int 21h ; Вызов DOS остановка пpогpаммы
INCLUDE function.asm
End Start
Мы просто после открытия файла если все было успешно, его закрыли.